package com.srp.backend.mapper;

import com.srp.backend.entity.FileUpload;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 文件上传数据访问接口
 */
@Mapper
public interface FileUploadMapper {
    
    /**
     * 插入文件记录
     */
    void insert(FileUpload fileUpload);
    
    /**
     * 根据ID查询文件
     */
    FileUpload selectById(@Param("id") Long id);
    
    /**
     * 根据用户ID分页查询文件列表
     */
    List<FileUpload> selectByUserIdWithPage(@Param("userId") Long userId, 
                                           @Param("offset") Integer offset, 
                                           @Param("size") Integer size);
    
    /**
     * 查询所有文件列表（分页）
     */
    List<FileUpload> selectAllWithPage(@Param("offset") Integer offset, 
                                      @Param("size") Integer size);
    
    /**
     * 统计用户文件总数
     */
    Integer countByUserId(@Param("userId") Long userId);
    
    /**
     * 统计所有文件总数
     */
    Integer countAll();
    
    /**
     * 逻辑删除文件
     */
    void deleteById(@Param("id") Long id);
    
    /**
     * 更新文件信息
     */
    void updateById(FileUpload fileUpload);
    
    /**
     * 根据存储文件名查询文件
     */
    FileUpload selectByStoredFileName(@Param("storedFileName") String storedFileName);
    
    /**
     * 根据文件路径查询文件
     */
    FileUpload selectByFilePath(@Param("filePath") String filePath);
    
    /**
     * 根据文件名查询
     */
    List<FileUpload> selectByFileName(@Param("fileName") String fileName);
    
    /**
     * 根据文件类型查询
     */
    List<FileUpload> selectByFileType(@Param("fileExtension") String fileExtension, @Param("offset") Integer offset, @Param("size") Integer size);
}